package com.shop.front.vo.store;

import com.alibaba.fastjson.annotation.JSONField;
import com.shop.jpa.domain.BaseDomain;
import com.shop.common.enums.pay.PayTypeEnum;
import com.shop.common.enums.store.StoreOrderStatusEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Transient;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@ApiModel("StoreOrderVo 订单信息")
@Data
public class StoreOrderVo extends BaseDomain implements Serializable {

    @ApiModelProperty(value = "id", hidden = true)
    @Id
    @JSONField(serialize=false)
    private Long id;

    /**
     * 订单号
     */
    @ApiModelProperty("订单号")
    private String orderNo;

    /**
     * 用户id
     */
    @ApiModelProperty("用户id")
    @Column(name = "uid")
    @JSONField(serialize=false)
    private Long uid;

    /**
     * 用户姓名
     */
    @ApiModelProperty("用户姓名")
    @Column(name = "real_name")
    private String realName;

    /**
     * 用户电话
     */
    @ApiModelProperty("用户电话")
    @Column(name = "user_phone")
    private String userPhone;

    /**
     * 详细地址
     */
    @ApiModelProperty("详细地址")
    @Column(name = "user_address")
    private String userAddress;

    /**
     * 订单商品总数
     */
    @ApiModelProperty("订单商品总数")
    @Column(name = "total_num")
    private Integer totalNum;

    /**
     * 订单总价
     */
    @ApiModelProperty("订单总价")
    @Column(name = "total_price")
    private BigDecimal totalPrice;

    /**
     * 邮费
     */
    @ApiModelProperty("邮费")
    @Column(name = "total_postage")
    private BigDecimal totalPostage;

    /**
     * 实际支付金额
     */
    @ApiModelProperty("实际支付金额")
    @Column(name = "pay_price")
    private BigDecimal payPrice;

    /**
     * 支付邮费
     */
    @ApiModelProperty("支付邮费")
    @Column(name = "pay_postage")
    private BigDecimal payPostage;

    /**
     * 支付状态
     */
    @ApiModelProperty("支付状态 0 未支付 1 已支付")
    @Column(name = "pay_status")
    private Integer payStatus;

    /**
     * 是否积分商品
     */
    @ApiModelProperty("是否积分商品")
    @Column(name = "is_integral")
    private Integer isIntegral;


    /**
     * 积分
     */
    @ApiModelProperty("积分")
    @Column(name = "integral")
    private BigDecimal integral;

    /**
     * 支付时间
     */
    @ApiModelProperty("支付时间")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @Column(name = "pay_time")
    private Date payTime;

    /**
     * 支付类型编码 2 微信-JT 3 支付宝-JT 12 微信-Sand 13 支付宝-Sand 8 余额 9 TG
     */
    @Column(name = "pay_code")
    @ApiModelProperty("支付类型编码 2 微信-JT 3 支付宝-JT 12 微信-Sand 13 支付宝-Sand 8 余额 9 TG")
    private Integer payCode;

    /**
     * 支付方式
     */
    @ApiModelProperty("支付方式")
    @Column(name = "pay_type")
    private String payType;

    /**
     * 订单状态（0 待支付 -40 已退款 10 待发货 20 待收货 30 待评价 40 已完成 -50 已取消）
     */
    @ApiModelProperty("订单状态（0 待支付 -40 已退款 10 待发货 20 待收货 30 待评价 40 已完成 -50 已取消）")
    @Column(name = "status")
    private Integer status;

    /**
     * 退款图片
     */
    @ApiModelProperty("退款图片")
    @Column(name = "refund_reason_wap_img")
    private String refundReasonWapImg;

    /**
     * 退款用户说明
     */
    @ApiModelProperty("退款用户说明")
    @Column(name = "refund_reason_wap_explain")
    private String refundReasonWapExplain;

    /**
     * 退款提交时间
     */
    @ApiModelProperty("退款提交时间")
    @Column(name = "refund_reason_time")
    private Date refundReasonTime;

    /**
     * 前台退款原因
     */
    @ApiModelProperty("前台退款原因")
    @Column(name = "refund_reason_wap")
    private String refundReasonWap;

    /**
     * 不退款的理由
     */
    @ApiModelProperty("不退款的理由")
    @Column(name = "refund_reason")
    private String refundReason;

    /**
     * 退款金额
     */
    @ApiModelProperty("退款金额")
    @Column(name = "refund_price")
    private BigDecimal refundPrice;

    /**
     * 快递名称/送货人姓名
     */
    @ApiModelProperty("快递名称/送货人姓名")
    @Column(name = "delivery_name")
    private String deliveryName;

    /**
     * 发货时间
     */
    @ApiModelProperty("发货时间")
    @Column(name = "delivery_time")
    private Date deliveryTime;

    /**
     * 发货类型
     */
    @ApiModelProperty("发货类型")
    @Column(name = "delivery_type")
    private String deliveryType;

    /**
     * 快递单号/手机号
     */
    @ApiModelProperty("快递单号/手机号")
    @Column(name = "delivery_id")
    private String deliveryId;

    /**
     * 备注
     */
    @ApiModelProperty("备注")
    @Column(name = "mark")
    private String mark;

    /**
     * 管理员备注
     */
    @ApiModelProperty("管理员备注")
    @Column(name = "remark")
    private String remark;

    /**
     * 拼团id 0没有拼团
     */
    @ApiModelProperty("拼团id 0没有拼团")
    @Column(name = "pink_id")
    private Integer pinkId;

    /**
     * 用户是否已删除
     */
    @ApiModelProperty("用户是否已删除")
    @Column(name = "is_user_del")
    private Integer isUserDel;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    @Column(name = "create_time")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    @ApiModelProperty("订单商品清单")
    @Transient
    private List<StoreOrderCartInfoVo> orderCartInfoList;

    @ApiModelProperty("订单状态")
    @Transient
    private String statusStr;
    public String getStatusStr() {
        return StoreOrderStatusEnum.val(this.status).getName();
    }

    @ApiModelProperty("支付类型")
    @Transient
    private String payCodeStr;
    public String getPayCodeStr() {
        return PayTypeEnum.val(this.payCode).getName();
    }
}